package site.marqstree.kotlin.library.base.injection.app

import android.content.Context
import dagger.Component
import javax.inject.Singleton


/*
 * 项目名: KotlinMall
 * 包名: site.marqstree.kotlin.baselibrary.injection.component
 * 文件名: AppComponent
 * 创建者: marqstree
 * 创建时间: 2020/2/20 9:09
 * 描述: app层全局依赖工厂管理者
 * 间接为业务层提供依赖对象，并不直接为业务层提供注入对象。
 * 将app层依赖对象传递给activity层依赖工厂管理者，
 * 同理，activity层依赖工厂管理者将activity层提供的依赖对象和app层依赖对象一起传递给业务层
 * 使得业务层能够获得所有依赖对象
 */
@Singleton
@Component(modules = arrayOf(AppModule::class))
interface AppComponent {
    //注意：没有inject方法，无法直接注入实例化依赖对象
    //但可为activity层提供依赖对象
    //提供app的上下对象
    fun appContext(): Context
}